package com.wjw.java.basic.array_;

import java.util.Arrays;

/**
 * ------------------------------------------------------------------------
 * 数组：存放多个同一类型的数据
 * ------------------------------------------------------------------------
 * 数组细节：
 * 1.数组属引用类型,数组型数据是对象(object)
 * 2.数组中可以是任意数据类型,基本数据类型和引用类型,但是不能混用
 * 3.数组创建后,如果没赋值,有默认值：
 *   byte short int long float double char   boolean  String
 *   0      0    0    0   0.0   0.0   \u0000   false   null
 * 4.数组下标从0开始,数组下标必须在指定范围内使用,否则会下标越界
 * 5.获取数组的大小使用：变量名.length
 * ------------------------------------------------------------------------
 */
public class ArrayInit {

    public static void main(String[] args) {
        staticInit_Array();
        dynamicInit_Array1();
        dynamicInit_Array2();
        array_exercise();
    }

    /**
     * 1.静态初始化：
     * 数据类型 [] 变量名 = {元素值,元素值,元素值};
     */
    public static void staticInit_Array(){
        double totalWeight = 0;
        double [] hens = {10,20,30,40.8,50.6,60};
        for (int i = 0; i < hens.length; i++) {
            totalWeight += hens[i];
        }
        System.out.println(hens instanceof Object ? "a":"b");
        System.out.println("总体重为："+totalWeight+",平均体重为："+ (totalWeight/hens.length));
    }

    /**
     * 2-1.动态初始化数组1：声明数组并在堆内存中,开辟了空间
     * 数据类型 [] 数组名 = new 数据类型[数组大小];
     */
    public static void dynamicInit_Array1(){
        int [] array =  new int[3];
        array[0] = 10;
        array[1] = 20;
        array[2] = 30;
        System.out.println(Arrays.toString(array));
    }

    /**
     * 2-2.动态初始化数组2：声明数组,在使用new关键字后,才在堆内存中开辟了空间
     * 数据类型 [] 数组名;
     * 数组名 = new 数据类型[数组大小];
     */
    public static void dynamicInit_Array2(){
        int [] array;//此时为null:还未在堆内存中开辟空间
        array = new int[3];//在堆中开辟了内存空间
        array[0] = 10;
        array[1] = 20;
        array[2] = 30;
        System.out.println(Arrays.toString(array));
    }

    public static void array_exercise(){
        char [] array = new char[26];
        for (int i = 0; i < array.length; i++) {
            array[i] = (char) ('A' + i);
        }
        System.out.println(Arrays.toString(array));
    }
}
